import java.util.List;

import org.junit.Test;

import junit.framework.TestCase;



public class TesteBiblioteca extends TestCase {
	
	Biblioteca biblioteca = new Biblioteca();
	
	@Test
	public void testbiblioteca() throws Exception {
		biblioteca.addUsuario(new Professor("professor"));
		assertEquals("Erro addUsuario", "professor", biblioteca.getUsuario(0).getNome());
		biblioteca.addUsuario(new Aluno("aluno"));
		assertEquals("Erro addUsuario", "aluno", biblioteca.getUsuario(0).getNome());
		biblioteca.addUsuario(new Pessoa("funcionario", "funcionario", "12345678901", "endereco", "fone"));
		assertEquals("Erro addUsuario", "funcionario", biblioteca.getUsuario(1).getNome());
		biblioteca.addUsuario(new Pessoa("outro", "outro", "32145678901", "endereco", "fone"));
		assertEquals("Erro addUsuario", "outro", biblioteca.getUsuario(2).getNome());
		biblioteca.addUsuario(new Professor("professorb"));
		assertEquals("Erro addUsuario", "professorb", biblioteca.getUsuario(4).getNome());
		
		
		System.out.println(biblioteca.pesquisaUsuario("Outro"));
		System.out.println(biblioteca.pesquisaUsuario("Outo"));
		
		biblioteca.addArcevo(new Livro("livro", "livro"));
		assertEquals("Erro addArcevo", "livro", biblioteca.getArcevo(0).getTitulo());
		biblioteca.addArcevo(new Livro("tese", "tese"));
		assertEquals("Erro addArcevo", "tese", biblioteca.getArcevo(1).getTitulo());
		biblioteca.addArcevo(new Livro("dissertacao", "dissertacao"));
		assertEquals("Erro addArcevo", "dissertacao", biblioteca.getArcevo(0).getTitulo());
		biblioteca.addArcevo(new Revista("revista", "revista"));
		assertEquals("Erro addArcevo", "revista", biblioteca.getArcevo(3).getTitulo());
		biblioteca.addArcevo(new Revista("periodico", "periodico"));
		assertEquals("Erro addArcevo", "periodico", biblioteca.getArcevo(3).getTitulo());
		
		System.out.println(biblioteca.pesquisaArcevo("tese"));
		System.out.println(biblioteca.pesquisaArcevo("revista"));

		biblioteca.emprestimo("funcionario", "revista");
		assertEquals("Erro emprestimo", "funcionario", biblioteca.getEmprestimo(0).getUsuario().getNome());
		System.out.println(biblioteca.getEmprestimo(0).getDataDaDevolucao());
		
		biblioteca.devolucao("funcionario", "revista");
		assertEquals("Erro devolucao", false, biblioteca.getEmprestimo(0).getStatus());
		assertEquals("Erro devolucao 2", true, biblioteca.getEmprestimo(0).getArcevo().getStatus());
		assertTrue("Erro devolucao 3", biblioteca.devolucao("funcionario", "revista") < 0);
		
	}
	
}
